package cn.itcast.feign.client;

import cn.itcast.hmall.dto.common.PageDTO;
import cn.itcast.hmall.dto.item.SearchItemDTO;
import cn.itcast.hmall.pojo.item.Item;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 商品服务 Feign接口
 * <p>
 * TODO 需要远程调用的方法自己补充哦
 */
@FeignClient("itemservice")
public interface ItemClient {

    /**
     * 商品微服务分页查询功能
     *
     * @param vo 请求参数
     * @return 结果
     */
    @PostMapping("/item/list")
    PageDTO<Item> list(@RequestBody SearchItemDTO vo);

    @GetMapping("item/list/{page}/{size}")
    List<Item> queryByPage(@PathVariable("page") int page, @PathVariable("size") int size);

    /**
     * 根据id查询商品信息
     *
     * @param id 商品id
     * @return 返回商品对象
     */
    @GetMapping("/item/{id}")
    Item getItemById(@PathVariable("id") Long id);

    /**
     * 扣减库存方法
     *
     * @param id  商品id
     * @param num 商品数量
     */
    @PutMapping("/item/stock/{itemId}/{num}")
    void substractStock(@PathVariable("itemId") Long id, @PathVariable("num") Integer num);

    /**
     * 加库存方法
     *
     * @param id  商品id
     * @param num 商品数量
     */
    @PutMapping("/item/stock/add/{itemId}/{num}")
    void addStock(@PathVariable("itemId") Long id, @PathVariable("num") Integer num);

}
